package exercises.newcoder.solution;

import java.util.Arrays;

/**
 * <a href="https://www.nowcoder.com/practice/8ae05c2913fe438b8b14f3968f64fc0b?tpId=202&&tqId=38849&rp=1&ru=/activity/oj&qru=/ta/code-written-high/question-ranking">
 * WC140 三个数的最大乘积</a>
 *
 * @author or2
 * @Description 给定一个长度为  的无序数组  ，包含正数、负数和 0 ，请从中找出 3 个数，使得乘积最大，返回这个乘积。
 * @create 2021年09月11日 时间: 15:58
 */
public class WC140 {
    /**
     * 最大乘积
     *
     * @param A int整型一维数组
     * @return long长整型
     */
    public long solve(int[] A) {
        Arrays.sort(A);
        return Math.max((long) A[0] * A[1] * A[A.length - 1], (long) A[A.length - 3] * A[A.length - 2] * A[A.length - 1]);
    }

   /*
   * public long solve(int[] A) {
        if (A.length < 3) {
            return Integer.MIN_VALUE;
        }
        int[] ans = new int[3];
        Arrays.fill(ans, Integer.MIN_VALUE);
        for (int value : A) {
            if (value > ans[2]) {
                int i = 2;
                for (int j = i; j > 0; j--) {
                    if (value > ans[j - 1]) {
                        ans[j] = ans[j - 1];
                        i--;
                    }
                }
                ans[i] = value;
            }
        }

        int multiAns = 1;
        for (int an : ans) {
            multiAns *= an;
        }
        return multiAns;
    }
   * */
}
